﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using ComunesMGI.DataTypes;
using System.Configuration;
using System.Data;

namespace MGI.AccesoDatos.AccesoBD
{
    class BDClientes
    {
        public List<DataCliente> GetClientes()
        {
            string nombre = "";
            int codigo = 0;

            List<DataCliente> listaClientes = new List<DataCliente>();
            string textoConexion = ConfigurationManager.AppSettings.Get("stringConection");
            SqlConnection cnn = new SqlConnection(textoConexion);

            string consulta = "Exec getClientes";
            SqlCommand cmd = new SqlCommand(consulta, cnn);
            SqlDataReader lector;
            try
            {

                cnn.Open();
                lector = cmd.ExecuteReader();

                while (lector.Read())
                {
                    nombre = (string)lector["CliNom"];
                    codigo = (int)lector["CliCod"];

                    DataCliente cliente = new DataCliente(codigo, nombre);
                    listaClientes.Add(cliente);
                }
                
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Problemas con la base de datos: " + ex.Message);
            }
            finally
            {
                cnn.Close();
            }
            return listaClientes;
        }

        public DataCliente GetCliente(int codCliente)
        {
            DataCliente dataCliente = null;
            string nomCliente = "";
            string textoConexion = ConfigurationManager.AppSettings.Get("stringConection");
            SqlConnection cnn = new SqlConnection(textoConexion);

            string consulta = "GetCliente";
            SqlCommand cmd = new SqlCommand(consulta, cnn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter par = new SqlParameter("@CliCod", codCliente);
            cmd.Parameters.Add(par);
            SqlDataReader lector;
            try
            {

                cnn.Open();
                lector = cmd.ExecuteReader();

                if (lector.Read())
                {
                    nomCliente = (string)lector["CliNom"];
                    dataCliente = new DataCliente(codCliente, nomCliente);


                }
                else
                {
                    throw new Exception("No existe el cliente de codigo: " + codCliente);
                }

            }
            catch (Exception ex)
            {
                throw new ApplicationException("Problemas con la base de datos: " + ex.Message);
            }
            finally
            {
                cnn.Close();
            }
            return dataCliente;
        }
    }
}
